##Exercicio 8
eutad<-read.table("teste/palmadulto.txt", sep="\t", header=T)
table(eutad)
unique(eutad)
str(eutad)

##1.2. Crie o objeto para guardar as distncias entre cada indivduo:
dist=matrix(NA, ncol=102, nrow=102)

#1.3. Calcule a distncia observada entre cada indivduo e guarde o resultados em dist:
for(i in 1:101)
{
  for(j in (i+1):102)
  {
    difx2=(eutad$gx[i]-eutad$gx[j])^2
    dify2=(eutad$gy[i]-eutad$gy[j])^2
    dist[i,j]<-sqrt(difx2 + dify2)
    dist[j,i]<-sqrt(difx2 + dify2)
  }
  
}
##1.4. Verifique o objeto dist e calcule o parmetro chamado de distncia mdia do vizinho mais prximo (MNN):
dist[1:7,1:7]
nn<-apply(dist, 1, min, na.rm=TRUE)
mnn<-mean(nn)
mnn

##simulando
##1.5. Crie um vetor resultado, com 1000 NA's, para guardar os valores de cada simulao.
nsim=1000
resultado=rep(NA, nsim)
resultado

##1.6. Guarde o valor observado na primeira posio de resultado;
resultado[1]=mean(mnn)

##1.7. Crie um ciclo com contador (i) que vai de 2 a 1000;
for(n in 2:nsim)
{
 xsim<-runif(102,0,320)
  ysim<-runif(102,0,320)
  dist.xy.sim<-matrix(NA, ncol=102, nrow=102)
  for(i in 1:101)
  {
    for(j in (i+1):102)
    {
      cateto.x<-(xsim[i]-xsim[j])^2
      cateto.y<-(ysim[i]-ysim[j])^2
      
      dist.xy.sim[i,j]<-sqrt(cateto.x+cateto.y)
      dist.xy.sim[j,i]<-sqrt(cateto.x+cateto.y)
    }
  }
  nn.sim<-apply(dist.xy.sim, 1, min, na.rm=TRUE)
  mnn.sim<-mean(nn.sim)
  resultado[n]<-mnn.sim
}

###1.9. Faa um histograma dos valores simulados e coloque uma linha vermelha vertical na posio do valor observado;
hist(resultado)
abline(v=resultado[1], col="red")

##1.10. Calcule a probabilidade do valor MNN observado ser gerado por uma distribuio espacial aleatria.
resultado0=resultado-mean(resultado)
prob<-sum(abs(resultado0>=abs(resultado0[1]))
prob.<-prob/length(resultado0)
             

##Exercicio2
animals<-read.table("teste/animais.txt", header = TRUE, sep = ";", dec = ",", as.is = TRUE)
animals<-na.exclude(animals)
#2.1. Calcule a inclinao da relao log(brain) ~ log(body) , utilizando a formula:
plot(log(brain)~log(body), data=animals)
beta<-sum((log(animals$body)-mean(log(animals$body)))*(log(animals$brain)-mean(log(animals$brain))))/sum(((log(animals$body)-mean(log(animals$body)))^2))
beta
modelo<-lm(log(brain)~log(body), data=animals)
coef(modelo)

##2.2. Crie um vetor para guardar o resultado de simulaes;
res.sim<-rep(NA,1000)
res.sim[1]<-coef(modelo)[2]
res.sim
##2.3. Desordene o vetor brain e guarde no objeto sim_brain;
sim_brain<-sample(animals$brain)
##2.4. Calcule a inclinao entre o log(sim_brain) ~ log(body) e guarde no vetor resultado;
for(i in 2:1000)
{
  sim_brain<-sample(animals$brain) 
  modelo2<-lm(log(sim_brain)~log(animals$body))
  res.sim[i]<-coef(modelo2)[2]
}
res.sim

#2.6. Faa o histograma dos valores simulados e compare com o valor observado da inclinao da relao;
hist(res.sim)
abline(v=beta, col="red")
#2.7. Calcule a probabilidade da inclinao observada ter sido gerada por variveis que so independentes;
unicaudal<-sum(res.sim>=res.sim[1]) 
unicaudal
p.uni<-unicaudal/length(res.sim)
p.uni 
